#!/bin/bash

DIR_MNT="/mnt/custom"
DIR_SYSTEM="${DIR_SYSTEM}/customcd/files"
TMP="/tmp/sysresccd-area31"

if [ ! -d ${TMP} ]; then
	mkdir -p ${TMP}
fi

REDIR=/dev/tty4
NDIR=/dev/null

crunch() {
read STRING;
echo $STRING;
}

# get_part_size( dev ) - Return the size in KB of the named partition.
get_part_size() {
	Size=$(fdisk -l $1|cut -d: -f2|egrep -i 'GiB|bytes|setores|sectors'|head -1|awk '{print $1, $2}'|cut -d',' -f1)
   echo $Size
}

rm -f $TMP/SeTswap $TMP/SeTswapskip $TMP/SeTuseswap $TMP/tmpscript

# desmontando tudo q estiver montado na swap
swapoff -a

SWAPLIST="`fdisk -l 2> /dev/null | egrep -i "Linux swap" | cut -f 1 -d ' ' | sort 2> $NDIR`" 

if [ "$SWAPLIST" = "" ]; then
 dialog --title " NENHUMA PARTIÇÃO SWAP DETECTADA " --yesno "\n \
 Você não criou nenhuma partição SWAP usando\n
 'cfdisk' ou 'fdisk'.\n\n\
 Gostaria de continuar mesmo sem SWAP? " 10 56
 if [ "$?" = "1" ]; then
  dialog --title " ABORTANDO SWAP " --msgbox "\n Crie uma partição SWAP usando 'cfdisk' ou 'fdisk', e tente novamente. ;)" \
8 55
 else
  touch $TMP/SeTswapskip
 fi
 exit
else # there is at least one swap partition:
 # Build the swap partition selection menu:
 cat << EOF > $TMP/tmpscript
dialog --backtitle "RescueCD Area31 Partition Tools" \\
--title " PARTIÇÃO SWAP DETECTADA " --checklist \\
"Foi detectada uma ou mais partições SWAP em seu sistema.\n\n \\
Estas partições foram pré-selecionadas \\
para serem utilizadas  como espaço de troca. \\
Caso haja alguma partição SWAP que você \\
não queira utilizar, por favor, desmarque \\
com as teclas direcionais UP/DOWN e pressione SPACE.\n\nSe desejar \\
utilizar todos, basta pressionar a tecla [ENTER].\n" \\
18 70 18 \\
EOF
 for swappartition in $SWAPLIST ; do
  PARTSIZE=$(get_part_size $swappartition)
  cat << EOF >> $TMP/tmpscript
"$swappartition" "Linux swap partition [${PARTSIZE}]" on \\
EOF
 done
 cat << EOF >> $TMP/tmpscript
 2> $TMP/SeTuseswap
EOF
 . $TMP/tmpscript
 if [ ! $? = 0 ]; then
  rm -f $TMP/tmpscript $TMP/SeTswap $TMP/SeTuseswap
  touch $TMP/SeTswapskip
 fi

 if [ -r $TMP/SeTuseswap ]; then
  # Remove extra quotes from SeTuseswap, if any:
  cat $TMP/SeTuseswap | tr -d \" > $TMP/SeTfoo
  mv $TMP/SeTfoo $TMP/SeTuseswap

  # Were any swap partitions asked for?
  if [ "$(cat $TMP/SeTuseswap)" = "" -a ! -r $TMP/SeTswapskip ]; then
   rm -f $TMP/tmpscript $TMP/SeTswap $TMP/SeTuseswap
   touch $TMP/SeTswapskip
  fi
 fi

 if [ ! -r $TMP/SeTswapskip ]; then
  dialog --backtitle "RescueCD Area31 Partition Tools" \
 --title " DESEJA CHECAR BAD BLOCK EM PARTIÇÃO SWAP? " --defaultno --yesno \
"RescueCD Area31 Setup irá preparar seu sistema de troca (SWAP). \
Ao formatar partições SWAP usando o 'mkswap' é possível verificar \
BAD BLOCKs. Este não é o padrão do RescueCD visto que vários HDs \
modernos checam por isso o tempo todo. \
\n\nGostaria de verificar por blocos defeituosos durante a formatação da partição SWAP?" \
14 60
  if [ $? = 0 ]; then
   CHECKBAD=yes
  else
   CHECKBAD=no
  fi

  # Run mkswap on swap partitions, unless they are already in use:
  for swappartition in $(cat $TMP/SeTuseswap) ; do
   if ! egrep -i -w $swappartition /proc/swaps 1> $REDIR 2> $REDIR ; then
    if [ "$CHECKBAD" = "no" ]; then
     dialog --title " FORMATANDO SWAP " --backtitle "Formatando partição SWAP." --infobox "\nFormatando partição SWAP ${swappartition}..." 5 50
     mkswap -v1 $swappartition 1> $REDIR 2> $REDIR
    else
 dialog --title " FORMATANDO SWAP " --backtitle "Formatando partição SWAP." --infobox "\nFormatando partição SWAP ${swappartition}..." 5 50

     mkswap -c -v1 $swappartition 1> $REDIR 2> $REDIR
    fi
       dialog --title " ATIVANDO SWAP " --backtitle "RescueCD Area31 Partition Tools" --infobox "\nAtivando partição SWAP ${swappartition}...\n " 5 50
    swapon $swappartition 1> $REDIR 2> $REDIR
   fi
  done

  # This is so people don't ask what that output was that flashed
  # by on the screen.  ;-)
  sleep 2

  # Add the swap partitions to the file that will go into /etc/fstab:
  for swappartition in $(cat $TMP/SeTuseswap) ; do
   printf "%-16s %-16s %-11s %-16s %-3s %s\n" "$swappartition" "swap" "swap" "sw" "0" "0" >> $TMP/SeTswap
  done

  echo "Sua partição SWAP foi ativada com sucesso. O ponto de montagem pode" > $TMP/swapmsg
  echo "ser adicionado ao /etc/fstab caso seja desejado:" >> $TMP/swapmsg
  echo >> $TMP/swapmsg
  cat $TMP/SeTswap >> $TMP/swapmsg
  dialog --title " SWAP CONFIGURADA " --exit-label OK --textbox $TMP/swapmsg 10 72
  rm $TMP/swapmsg
 fi  
fi

sh /usr/share/sysresccd-area31/sysresccd-area31-showmount
